package com.kernel.entity;

import java.io.Serializable;
import java.util.Objects;

/****************************************
 * @name Person
 * @description person类
 * @author 黄彬恒
 * @since 2018/8/21
 ***************************************/
public class Person implements Serializable, Comparable<Person> {
    /*实现Serializable,表明该类对象可以被序列化(自动完成)*/
    /*使用Externalizable接口则是需要手工序列化,可以指明类中哪些元素需要被序列化，哪些元素不需要被序列化*/
    private static final long serialVersionUID = 1L;

    private String name;
    private int age;

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }

    /**
     * @param o 另一个person对象
     * @return 对象内容一致返回true，反之false
     */
    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || this.getClass() != o.getClass()) return false;
        Person person = (Person) o;
        return this.age == person.age && Objects.equals(this.name, person.name);
    }

    @Override
    public int hashCode() {
        return Objects.hash(name, age);
    }

    /**
     * @param o 需要排序的person对象
     * @return 默认采用升序的方式排序对象
     */
    @Override
    public int compareTo(Person o) {
        return Integer.compare(this.age, o.age);
    }
}
